/**
 * 
 */
Ext.define('app.view.user.UserController', {

	extend: 'Ext.app.ViewController',
	
	alias: 'controller.user',
	
	init: function() {
		Ext.log('init usercontroller.');
	},
	
	/**
	 * 点击登录人员列表的新增按钮之后触发的方法
	 */
	newUser: function(btn) {
		Ext.getBody().mask("加载中...");
		this.showUserWindow(btn, "新增登录人员信息");
	},
	
	/**
	 * 打开员工录入的窗口
	 * @param {} btn
	 * @param {} title
	 */
	showUserWindow: function(btn, title) {
		var userwindow = Ext.create('app.view.user.window.UserWindow', {
			title: title
		});
		
		//在打开窗口之前，先请求后台数据，将省份信息从数据库中得到
		//首先找到省份的下拉框combobox
		var provinceCombo = userwindow.down('form').down('combobox[name=province]');
		console.log(provinceCombo.getStore());
		
		userwindow.show();
		Ext.getBody().unmask();
	},
	
	/**
	 * 选中一行数据之后，将数据加载到表单中进行编辑
	 */
	editUser: function() {
		Ext.getBody().mask("加载中...");
		var recordArr = this.getView().getSelectionModel().getSelection();
		if (!recordArr) {
			Ext.toast({
		     	html: "请选中一条数据",
		     	title: '提示',
	     		saveDelay : 10,  
                align : 'tr',  
                closable : true,  
                minWidth : 200,  
                useXAxis : true,  
                slideInDuration : 500  
			});
			return;
		} 
		//找到window和form
		var userwindow = Ext.create('app.view.user.window.UserWindow', {
			title: "修改登录人员信息"
		});
		var form = userwindow.down('form');
		
		var record = recordArr[0];
		form.getForm().loadRecord(record);
		userwindow.show();
		Ext.getBody().unmask();
	},
	
	/**
	 * 删除数据
	 */
	deleteUser: function() {
		var grid = this.getView(),
			selection = grid.getSelectionModel().getSelection(),
			message = '',
			idArr=[];
			
		if (selection.length == 1) {
			message += '『' + selection[0].get('username') + '』 吗?';
			idArr.push(selection[0].get("id"));
		} else { //选择了多条记录
			message = '<strong><ol>';
			Ext.Array.each(selection, function(record) {
				message += '<li>' + record.get('username') +'</li>';
				idArr.push(record.get("id"));
			});
			message += '</ol></strong>';
			message = '以下  ' + selection.length + ' 条记录吗？' + message;
		}	
		
		Ext.Msg.confirm(
			'提示', 
			'您确定要删除' + message, 
			function(choice) {
				if (choice == "yes") { //如果确定，清空表单数据同时关闭窗口
					Ext.Ajax.request({
						url: 'rest/user/delete',
						params: {
							userIds: idArr.join(",")
						},
						success: function(response, options) {
							var respText = Ext.util.JSON.decode(response.responseText);
							if (respText.success) {
								//从store中把选中的数据删除
								Ext.Array.each(selection, function(record) {
									grid.getStore().remove(record);
								});
							}
							Ext.toast({
						     	html: respText.msg,
						     	title: '删除结果',
					     		width: 200,
						     	align: 't'
							});
						},
						failure: function(response, options) {
							var respText = Ext.util.JSON.decode(response.responseText);
							Ext.toast({
						     	html: respText.msg,
						     	title: '删除结果',
					     		width: 200,
						     	align: 't'
							});
						},
						scope: this
					});
				}
			}, 
			this
		);
	},
	
	listen: {
		controller: {
			'userwindow': {
				refreshGrid: 'refreshGrid'				
			}
		}
	},
	
	//刷新表格
	refreshGrid: function(controller, msg) {
		this.getView().getStore().reload();
	},
	
	//编辑按钮、删除按钮的状态。如果选中了一条记录，则按钮可以点击，如果没有记录被选中，则按钮不可点击
	onSelectionChange: function(model, selected, eOpts) {
		// 设置修改按钮的状态
		this.getView().down('toolbar button#modify')[selected.length > 0 ? 'enable' : 'disable']();
		// 设置删除按钮的状态
		this.getView().down('toolbar button#delete')[selected.length > 0 ? 'enable' : 'disable']();
	}
}) 
